From: Georges Basile Stavracas Neto Date: Wed, 10 Feb 2021 21:09:04 +0000 (-0300) Subject: overviewControls: Cache workspaces boxes X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~616^2^2~396 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=9c6d8e2aad6b66aec4f9159235d4dd7f6ca56c86;p=gnome-shell.git overviewControls: Cache workspaces boxes Next commit will need to access the allocated workspaces boxes, so cache them at allocation time. Part-of: --- diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js index efb3fd9fb..94cf2336e 100644 --- a/js/ui/overviewControls.js +++ b/js/ui/overviewControls.js @@ -37,6 +37,8 @@ class ControlsManagerLayout extends Clutter.BoxLayout { this._viewSelector = viewSelector; this._dash = dash; + this._cachedWorkspaceBoxes = new Map(); + stateAdjustment.connect('notify::value', () => this.layout_changed()); } @@ -140,15 +142,18 @@ class ControlsManagerLayout extends Clutter.BoxLayout { let params = [box, searchHeight, dashHeight, thumbnailsHeight]; const transitionParams = this._stateAdjustment.getStateTransitionParams(); + // Update cached boxes + for (const state of Object.values(ControlsState)) { + this._cachedWorkspaceBoxes.set( + state, this._getWorkspacesBoxForState(state, ...params)); + } + let workspacesBox; if (!transitionParams.transitioning) { - workspacesBox = - this._getWorkspacesBoxForState(transitionParams.currentState, ...params); + workspacesBox = this._cachedWorkspaceBoxes.get(transitionParams.currentState); } else { - const initialBox = - this._getWorkspacesBoxForState(transitionParams.initialState, ...params); - const finalBox = - this._getWorkspacesBoxForState(transitionParams.finalState, ...params); + const initialBox = this._cachedWorkspaceBoxes.get(transitionParams.initialState); + const finalBox = this._cachedWorkspaceBoxes.get(transitionParams.finalState); workspacesBox = initialBox.interpolate(finalBox, transitionParams.progress); } @@ -156,7 +161,7 @@ class ControlsManagerLayout extends Clutter.BoxLayout { // AppDisplay const workspaceAppGridBox = - this._getWorkspacesBoxForState(ControlsState.APP_GRID, ...params); + this._cachedWorkspaceBoxes.get(ControlsState.APP_GRID); params = [box, searchHeight, dashHeight, workspaceAppGridBox]; let appDisplayBox;